package ln.javatest.day10.demo02;
/*
java.text,DateFormat:是日期/时间格式化子类的抽象类
作用：可以对日期和我们日常看的日期文本进行相互转换。
成员方法：
    String format（Date date):按照指定的模式，把Date日期格式化为符合模式的字符串。
    Date parse（String source) 把符合模式的字符串，解析为Date日期
DateFormat类是一个抽象类，无法直接创建对象进行使用，可以使用DateFormat的子类

java.text.SimpleDateFormat extends DateFormat
构造方法：
    SimpleDateFormat(String pattern)用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
    参数：
        String pattern：传递指定的模式
    模式：区分大小写
        y   年
        M   月
        d   日
        H   时
        m   分
        s   秒
    写对应的模式，会把模式替换为对应的日期和时间：
        “yyyy-MM-dd HH:mm:ss"
        "yyyy年MM月dd日 HH时mm分ss秒“
    注意事项：
    模式中的字母不能更改，连接模式的符号可以改变

*/

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Demo02Date {
    public static void main(String[] args) throws ParseException {
        demo01();
        demo02();
    }
    /*
     使用DateFormat类中的format方法，把日期格式化为文本
     String format（Date date):按照指定的模式，把Date日期格式化为符合模式的字符串。
     使用步骤：
        1.创建SimpleDateFormat对象，构造方法中传递指定的模式
        2.调用SimpleDateFormat对象中的方法，按照构造方法中指定的模式，把Date日期格式化为符合模式的字符串（文本）
    */
    private static void demo01(){
        //1.创建SimpleDateFormat对象，构造方法中传递指定的模式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //2.调用SimpleDateFormat对象中的方法format，按照构造方法中指定的模式，把Date日期格式化为符合模式的字符串（文本）
        Date date = new Date(); //获取当前系统时间和日期
        String text = sdf.format(date);  //转换为指定格式的文本字符串
        System.out.println(date); //Sun Jan 09 12:20:05 CST 2022
        System.out.println(text); //2022-01-09 12:20:05
    }

    /*
     使用DateFormat类中的parse方法，把文本解析为日期
     Date parse（String source):按照指定的模式，把Date日期格式化为符合模式的字符串。
     使用步骤：
        1.创建SimpleDateFormat对象，构造方法中传递指定的模式
        2.调用SimpleDateFormat对象中的方法，按照构造方法中指定的模式，把Date日期格式化为符合模式的字符串（文本）
     注意：
        public Date parse(String source) throws ParseException
        parse方法声明了一个异常叫ParseException解析异常
        如果字符串和构造方法中的模式不一样，那么程序就会抛出异常。
        调用一个抛出了异常的放，就必须去处理这个异常，要么throws继续声明抛出这个异常，要么try...catch自己处理这个异常


    */
    private static void demo02() throws ParseException {
        //1.创建SimpleDateFormat对象，构造方法中传递指定的模式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //2.调用SimpleDateFormat对象中的方法parse，把符合构造方法中的模式的字符串，解析为Date日期。
        Date date = sdf.parse("2008-12-22 12:20:22");  //这里面的时间字符串必须和上面指定的模式要一样
        System.out.println(date);  //Mon Dec 22 12:20:22 CST 2008

    }

}

